Oracle Band-Aids
Recently I’ve been thinking about how often we DON’T fix problems. I mean, we usually make the situation better and often in very short order. But a lot of the time we don’t really fix “the problem”. We just do something to cover it up, or make it less painful. I call it putting Band-Aids on the problem.
The Band-Aid metaphor works on several levels.
- Band-Aids don’t actually fix the problem, they just cover it up.
- They aren’t meant to be permanent.
- And they don’t keep you from stabbing yourself again in another spot.
- But they do make it less painful.
- And they keep out germs so they keep some problems from getting worse.
- And they are cheap (all those boxes in the picture cost less than $20 combined).
There are all kinds of special purpose Band-Aids for special applications. Like the ones that have antibiotics, butterfly bandages for closing big cuts, etc… When it comes to Oracle, my personal favorite Band-Aid is memory. Additional memory covers up a lot of sins. One of the primary design goals of the original Oracle database was to eliminate disk access. This remains a key objective today. You can think of the database as a very sophisticated disk cache. The goal for a lot of systems is to never do real time disk access (with the exception of commit processing). So it stands to reason that memory is a key component (maybe “the” key component) of most Oracle systems. And it’s relatively cheap. There is often a surplus of memory already installed that is just not being used as effectively as it could be. But even if it’s necessary to add an additional memory module to a server, this option is generally very inexpensive when compared to other potential “hardware upgrades”.
Don’t get me wrong, there are a lot of valid reasons for using Band-Aids with Oracle. I know some people that seem adamantly against applying short term fixes instead of addressing the underlying problem. But it seems to me that in certain circumstances (which seem to occur fairly often actually) Oracle Band-Aids are an appropriate response. A few of my favorites reasons for applying them are:
- Buying time to figure out what’s really going on and how to fix it
- Buying time until the system is decommissioned or a new version is rolled out
- Buying time until the developers can get the real fix through change control (and as we all know, sometimes this takes a while)
- Just decreasing the pain because it’s a packaged app that we can’t change
I do think we should be vigilant about not overdoing it though. Otherwise our databases end up like the guy in the picture below. Pretty messy and sometimes hard to even figure out what the original intent was.
Along the same lines, keep in mind that Band-Aids often leave a lot of left over trash:
Anyway, that’s my rambling for today. Just for fun, here are a few more pictures of some unusual Band-Aids.
Feel free to let me know what you think about applying Band-Aids to Oracle systems. And what your favorite (or least favorite) Oracle Band-Aids are.
Here’s a bandaid for you – the backup is not scheduled to run yet thru the tape management system, so let’s put a cron job out there to just delete archive logs???!!!
>And what your favorite (or least favorite) Oracle Band-Aids are.
Not favorite, but usable (by some people) Oracle band-aids:
1) CURSOR_SHARING=FORCE
2) any underscore parameter with non-default value
3) grant dba to app_user 🙂
4) commit_write = ‘batch,nowait’
5) event 10261
6) indexes rebuilding
Michael,
Cron jobs are good for everything! (Aren’t they?)
Timur,
Good list. CURSOR_SHARING is probably my least favorite Band-Aid as well, but all those are good. I wasn’t familiar with the 10261 event by the way. Thanks for pointing that one out.
Kerry